<?php

    /**
     * This file is part of the Intelligencer package.
     * For the full copyright and license, please view the LICENSE
     * file that was distributed with this source code.
     * 
     * @author      drapeko <roman.drapeko@gmail.com>
     * @copyright   Roman Drapeko <roman.drapeko@gmail.com>, 2009 - present
     */

    /**
     * Cacheable Intelligencer Interface
     * 
     * @author drapeko
     */
    interface itCacheableIntelligencer {
        
        /**
         * Sets the cache that is used for caching classes and their locations.
         * @param itCache $cache
         * @return itIntelligencer itself
         */
        public function setCache(itCache $cache = null);
        
        /**
         * Returns the class cache
         * @return itCache
         */
        public function getCache();
        
        /**
         * Sets the cache to be aggressive or non-aggressive. 
         * The aggressive cache means that if the cache exists and the class is not found afterwards
         * Intelligencer won't do the normal flow.
         * 
         * @param boolean $aggressiveCaching true
         * @return itIntelligencer itself
         */
        public function setAggressiveCache($aggressiveCaching = true);
        
        /**
         * Returns whether the cache is aggressive
         * @return boolean
         */
        public function isAggressiveCache();
    }
    
?>